package com.time.client.domain.service;

import com.time.client.common.entity.PageResult;
import com.time.client.domain.entity.PostBO;
import com.time.client.domain.entity.PostTimelineMonthBO;

/**
 * 文章管理领域服务层接口类
 *
 * @author: HuangQi
 * @date: Created in 9:56 2025/11/4
 * @description: 文章管理领域服务层接口
 */
public interface ClientPostDomainService {

    /**
     * 根据条件分页查询文章基本信息
     *
     * @param postBO 查询条件
     * @return 文章基本信息列表
     */
    PageResult<PostBO> queryAllPost(PostBO postBO);

    /**
     * 获取单个文章信息
     *
     * @param id 文章id
     * @return 文章详细信息
     */
    PostBO queryPost(Long id);

    /**
     * 分页获取文章时间线
     *
     * @param postBO 查询条件（分页）
     * @return 时间线结果
     */
    PageResult<PostTimelineMonthBO> queryTimeline(PostBO postBO);

    /**
     * 根据分类分页查询文章基本信息
     *
     * @param postBO 分类信息
     * @return 文章基本信息列表
     */
    PageResult<PostBO> queryPostByCategory(PostBO postBO);

    /**
     * 根据标签分页查询文章基本信息
     *
     * @param postBO 标签信息
     * @return 文章基本信息列表
     */
    PageResult<PostBO> queryPostByTag(PostBO postBO);

    /**
     * 更新文章统计数据（浏览量、点赞数、评论数等）
     *
     * @param postBO 包含文章ID及需要更新的统计数据
     * @return 是否更新成功
     */
    boolean updatePostData(PostBO postBO);
}
